An optical disk or a magnetic tape library (also called a "jukebox") is a mechanical device capable of mounting units of storage media (e.g., disks or tape cartridges) on a drive in response to access requests from a host computer system. A library usually comprises a set of one or more drives, a storage area for unmounted media, recording media, and a robot picker mechanism (possibly more than one) that moves the recording media between the storage area and the drives. Libraries range in physical size from that of a small room containing 1,000 or more media units to a desk top unit containing as few as 8 media units. The storage capacity of the largest library systems is in the terabyte range, while the smallest libraries may have capacities of only 1 gigabyte.
Library systems are used in many applications and generally perform their function in a satisfactory manner. There is, however, much room for improvement in the reliability, performance, and flexibility of conventional systems. For instance, most libraries have only one picker mechanism for transporting media to and from its drives. This characteristic is a single mechanical point of failure and represents a major weakness in the reliability of a library. If and when a picker fails, all of the data stored in such a library, possibly terabytes, is inaccessible until the picker is repaired.
In co-pending application Ser. No. 08/142,534, filed Oct. 25, 1993, a Redundant Array of Independent Libraries (RAIL) is described wherein data stored on dismountable media is protected by storing redundant parity information on a separate storage unit. Different configurations for the placement of redundant parity information in arrays of magnetic fixed disks have been described by Patterson et al., "A Case for Redundant Arrays of Inexpensive Disks (RAID)", Proceedings of ACM SIGMOD, Chicago, Ill., Jun. 1-3, 1988, pp. 109-116. The RAIL parity storage unit is often another unit of dismountable media like that used to store data. When data is read from a data media unit, only that unit, and not the unit storing parity, need be mounted in the array. When data is written, however, both the data media unit and the parity media unit need to be mounted on drives to have both of their values updated. This requirement to mount two separate media units to perform one write can impose a severe performance penalty on a mass storage system constructed from dismountable media. This is because the major performance limitation of any library of dismountable media is the time required to mount and dismount media units. Separate media units in a library can only be accessed at the rate at which the picker can move the units to and from the drives. Optical disk libraries can require tens of seconds to complete a disk exchange, and tape libraries require even more time.
In magnetic fixed disk RAID systems, a parity logging technique has been proposed to improve the efficiency of writing new parity. Logging is a well known technique for improving performance in computer data storage systems by transforming many small operations into one larger more efficient one. The parity logging technique proposed for RAID systems has been found, through simulation, to improve small write performance by transforming small single block transfers into larger, more efficient, track and cylinder transfers. This technique is described by Stodolsky et al., "Parity logging--Overcoming the Small Write Problem in Redundant Disk Arrays", 20th Ann. Int. Symposium On Computer Architecture, May 16-19, 1993, San Diego, Calif. However, such a technique is not of significant value in a RAIL storage system because the main performance bottleneck, unlike a magnetic fixed disk RAID system, is not the time penalty of a media data transfer operation, but the time penalty of a media mount. For instance, a typical optical disk drive can perform 400 to 500 random single block accesses in the time it takes to exchange a single optical disk. Also, such a technique reserves a fixed set of parity log blocks (called parity log regions) with a strict one-to-one mapping between parity blocks and parity update blocks, which effectively doubles the amount of redundant data that must be stored. This is not feasible in a library array where it is expected that the amount of stored parity information will be very large (possibly terabytes for some systems). It would be economically and architecturally prohibitive to supply a matching amount of magnetic fixed disks or other nonvolatile storage to store the parity log.
What is needed is a data storage array of libraries of dismountable media that includes a system for efficiently and reliably handling redundant parity information.